﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;

/*
继承的作用：
	1.代码复用，子类有父类的索引；
	2.扩展父类的功能。
继承的三种方式：public、private、protected
	0.不管何种继承方式，子类都不能访问父类的private成员，但可访问public和protected成员；
	1.public：class Son : public Father
		从父类继承下来的属性，访问权限不变；
	2.private：class Son : private Father 
		从父类继承下来的属性，public的变为protected，private的还是private，protected的还是protected；
	3.protected：class Son : protected Father 
		从父类继承下来的属性，和private方式一样，public的变为protected，private的还是private，protected的还是protected；
*/
class Father {
public:
	void func1() {
		cout << "约小姐姐" << endl;
	}
	void func2() {
		cout << "有钱" << endl;
	}
public:
	int a;
private:
	int b;
protected:
	int c;
};

class Son : public Father {
	void func3() {
		cout << "有才" << a << c << endl;
	}
};
void test() {
	Son *son = new Son;
	cout << son->a << endl; 
}

class Son1 : private Father {
	void func3() {
		cout << "有才" << a << c << endl;
	}
};
void test01() {
	Son1 *son = new Son1;
	cout << son->a << endl;
}

class Son2 : protected Father {
	void func3() {
		cout << "有才" << a << c << endl;
	}
};
void test01() {
	Son *son = new Son;
	son->func1();
	son->func2();
}



int main()
{

	test01(); 

	system("pause");
	return EXIT_SUCCESS;
}